//#include <iostream>
//#include <string>
//
//using namespace std;
//
//const int N = 1e6 + 10;
//int a[N], b[N], c[N];
//int la, lb, lc;
// 
//void add(int* c, int* a, int* b)
//{
//	for(int i = 0; i < lc; i++)
//	{
//		c[i]+=a[i]+b[i];
//		c[i+1]=c[i]/10;
//		c[i]%=10;
//	}
//	if(c[lc]) lc++;
//}
//
//int main()
//{
//	string s1, s2;
//	cin >> s1 >> s2;
//	
//	la = s1.size();
//	lb = s2.size();
//	lc = max(la, lb);
//	
//	for(int i = 0; i < la; i++)
//	{
//		a[la - 1 - i] = s1[i] - '0';
//	}
//	for(int i = 0; i < lb; i++)
//	{
//		b[lb - 1 - i] = s2[i] - '0';
//	}
//	
//	add(c, a, b);
//	
//	for(int i = lc-1; i >= 0; i--) cout << c[i];
//	
//	return 0;
//}

#include <iostream>
#include <string>
using namespace std;

const int N = 1e6;
int a[N], b[N], c[N];
int la,lb,lc;
int flag = 0;

bool cmp(string& s1, string& s2)
{
	if(s1.size()!=s2.size()) return s1.size() < s2.size();
	
	return s1 < s2;
}

void sub(int* c, int* a, int* b)
{
	for(int i = 0; i < lc; i++)
	{
		c[i] += a[i] - b[i];
		if(c[i] < 0)
		{
			c[i + 1]--;
			c[i] += 10;
		}
	}
	
	while(lc > 1 && c[lc - 1] == 0)
	{
		lc--;
	}
}

int main()
{
	string s1, s2;
	cin >> s1 >> s2;
	
	if(cmp(s1, s2)) 
	{
		s1.swap(s2);
		cout << '-';
	}
	
	la = s1.size();
	lb = s2.size();
	lc = max(la, lb);
	
	for(int i = 0; i < la; i++) a[la - i - 1] = s1[i] - '0';
	for(int i = 0; i < lb; i++) b[lb - i - 1] = s2[i] - '0';
	
	sub(c, a, b);
	
	for(int i = lc - 1; i >= 0; i--) cout << c[i];
	
	return 0;
}



































